package com.cupster.base_super_resource;

import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.animation.DecelerateInterpolator;
import android.widget.TextView;

import androidx.annotation.Nullable;

public class AlwaysMarqueeTextView extends TextView {
    public AlwaysMarqueeTextView(Context context) {
        super(context);
        initExTool(context , null);
    }

    public AlwaysMarqueeTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initExTool(context ,attrs);
    }

    public AlwaysMarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initExTool(context ,attrs);
    }

    public AlwaysMarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initExTool(context ,attrs);
    }

    //========================================================================
    //============================   扩展1   =================================
    //========================================================================
    //重置父类判断跑马灯滚动条件1
    @Override
    public boolean isFocused() {
        return true;
    }

    //重置父类判断跑马灯滚动条件2
    @Override
    public void setSelected(boolean selected) {
        super.setSelected(true);
    }

    //========================================================================
    //============================   扩展2   =================================
    //========================================================================

    private Paint mPaint;
    private int underColor = -1;

    private void  initExTool(Context context ,AttributeSet attrs){
        mPaint = new Paint();
        if (attrs == null){
            mPaint.setColor(Color.BLUE);
        }else {
            TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AlwaysMarqueeTextView);
            //取值
             underColor= typedArray.getInt(R.styleable.AlwaysMarqueeTextView_under_color, Color.parseColor("#0000ff"));
            //使用
            mPaint.setColor(underColor);
            //释放
            typedArray.recycle();
        }

        //----------------------
        //------- 扩展3 ---------
        //----------------------
        initSetting();
    }


    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        //==============================================
        //========= 设置自定义View的默认大小 ==============
        //==============================================
        //取出值
        int width = getCalSize(100, widthMeasureSpec);
        int height = getCalSize(100, heightMeasureSpec);

        //处理值

        //设置
        setMeasuredDimension(width, height);
    }

    private int getCalSize(int defaultSize, int measureSpec) {
        int calSize = defaultSize;

        int mode = MeasureSpec.getMode(measureSpec);//获取模式
        int size = MeasureSpec.getSize(measureSpec);//获取大小

        switch (mode) {
            case MeasureSpec.UNSPECIFIED: //如果没有指定大小，就设置为默认大小
                calSize = defaultSize;
                break;

            case MeasureSpec.AT_MOST: //如果测量模式是最大取值为size
                //我们将大小取最大值,你也可以取其他值
                calSize = size;
                break;

            case MeasureSpec.EXACTLY: //如果是固定的大小，那就不要去改变它
                calSize = size;
                break;
            default:
                break;

        }
        return calSize;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        //添加下划线
        super.onDraw(canvas);
        mPaint.setColor(Color.GREEN);
        canvas.drawLine( 0 ,getHeight()/2 ,getWidth() ,getHeight()/2 , mPaint);



    }




    //========================================================================
    //============================   扩展3   =================================
    //========================================================================
    private void initSetting() {
        setEllipsize(TextUtils.TruncateAt.MARQUEE);//跑马灯滚动
        setMarqueeRepeatLimit(-1);//-1无限循环，1循环一次 ，n 循环n次
        setSingleLine(true);
        setHorizontallyScrolling(true);
        setFocusable(true);
        setFocusableInTouchMode(true);
    }


}
